<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        let p = new Promise((res,rej)=>{
            res();
            // rej('error')
        })

        // console.log(p);

        // 异常穿透
        // 1. then里面没有定义可以处理的函数，then会踢皮球，把结果和状态扔给下一个then
        // 2. then的返回promise 会受执行函数的返回值影响。
            // 1. 返回的是一个非promise情况 字符串、数组、数字、布尔值、对象... - 成功
            // 状态就是成功，结果值就是返回值。
            // 2. 返回的是promise对象，then的返回promise和return的promise状态和结果一致。
            // 3. 抛出错误，就是rejected，结果值就是 抛出的值。

        let p2 = p.then(val=>{},rea=>{
            console.log(rea);
            // return false;
            return new Promise((res,rej)=>{
                res('okk');
                // rej('err');
                // throw '错误'
            })

            // throw '错误了'
        });

        // let p3 = p2.then();

        console.log(p2);


    </script>
</body>
</html>